home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 1.toast / Sample Code / Archive / QuickTime / QuickTime VR / Make QTVR Object / Prefs.c < prev    next >
Encoding:
Text File  |  2000-09-28  |  3.3 KB  |  147 lines  |  [TEXT/CWIE]

  1. //
  2. //         This is sample code which will make QTVR object movies from Linear QuickTime movies.
  3. //
  4. //        © 1991-1996 Apple Computer, Inc.  All rights reserved.
  5. //
  6.  
  7. #include "MakeQTVRObject.h"
  8. #include "extern.h" 
  9.  
  10. OSErr    RetrievePrefs()
  11. {
  12.     OSErr                     err = noErr;
  13.     ConstStr255Param        fileName = "\pMakeQTVRObject Prefs";
  14.     short                    refNum;
  15.     Handle                    myData;
  16.     long                    myEOF;
  17.     short                    globalRef;
  18.     
  19.     // Find the prefs folder
  20.     err = FindFolder(
  21.         kOnSystemDisk,
  22.         kPreferencesFolderType,
  23.         true,
  24.         &gPrefSpec.vRefNum,
  25.         &gPrefSpec.parID);
  26.         
  27.     if (err != noErr)
  28.         {
  29.         UserMessage("\pCan't find Preferences folder.");
  30.         return 6;
  31.         }
  32.         
  33.     PLstrcpy(gPrefSpec.name, fileName);    
  34.     err = FSpOpenDF (&gPrefSpec, fsRdWrPerm, &refNum);
  35.     if(err)
  36.         {
  37.         //fill in default prefs and save to disk
  38.         gPrefInf.dropMode = false;
  39.         StuffQTVRObjectFileFormat1x0 (kStandardObject,
  40.                                     60,
  41.                                     36,
  42.                                     1,
  43.                                     1,
  44.                                     0,
  45.                                     0,
  46.                                     Long2Fix(360),
  47.                                     0,
  48.                                     0,
  49.                                     Long2Fix(180),
  50.                                     0,
  51.                                     0,
  52.                                     &gPrefInf.objectInfo);
  53.  
  54.         SavePrefs();
  55.         }
  56.     else
  57.         {
  58.         //Get the prefs out of the file
  59.         FSClose(refNum);
  60.         err = FSpOpenDF (&gPrefSpec, fsRdWrPerm, &globalRef);
  61.         if (err != noErr)
  62.             {
  63.             UserMessage("\pCan't open Preferences file.");
  64.             return 1;
  65.             }
  66.         err = GetEOF(globalRef,&myEOF);
  67.         if (err != noErr)
  68.             {
  69.             UserMessage("\pCan't open Preferences file.");
  70.             return 1;
  71.             }
  72.         err = SetFPos(globalRef,fsFromStart,0);
  73.         if (err != noErr)
  74.             {
  75.             UserMessage("\pCan't open Preferences file.");
  76.             return 1;
  77.             }
  78.         myData = NewHandle(myEOF);
  79.         HLock((Handle)myData);
  80.         err = FSRead(globalRef,&(myEOF),(Ptr)*myData);
  81.         if (err != noErr)
  82.             {
  83.             UserMessage("\pCan't open Preferences file.");
  84.             return 1;
  85.             }
  86.         FSClose(globalRef);
  87.         gPrefInf = **((PrefInfo**)myData);
  88.         HUnlock(myData);
  89.         DisposeHandle(myData);
  90.         
  91.         
  92.         if ((gPrefInf.objectInfo.numberOfColumns <= 0) 
  93.             || (gPrefInf.objectInfo.numberOfRows    <= 0) 
  94.             || (gPrefInf.objectInfo.fieldOfView     <= 0) 
  95.             || (gPrefInf.objectInfo.startHPan   > gPrefInf.objectInfo.endHPan)
  96.             || (gPrefInf.objectInfo.startVPan   < gPrefInf.objectInfo.endVPan) 
  97.             || (gPrefInf.objectInfo.initialHPan < gPrefInf.objectInfo.startHPan)
  98.             || (gPrefInf.objectInfo.initialHPan > gPrefInf.objectInfo.endHPan) 
  99.             || (gPrefInf.objectInfo.initialVPan > gPrefInf.objectInfo.startVPan)
  100.             || (gPrefInf.objectInfo.initialVPan < gPrefInf.objectInfo.endVPan) 
  101.             || (gPrefInf.objectInfo.loopSize        <= 0))
  102.             {
  103.             UserMessage("\pPrefs file is corrupted.  Please delete it and retry.");
  104.             return (1);
  105.             }    
  106.         }
  107.     return 0;
  108. }
  109.  
  110. OSErr    SavePrefs()
  111. {
  112.     long            bytes;
  113.     OSErr            err;
  114.     short            fRefNum;
  115.     Handle            data;
  116.     
  117.     FSpDelete (&gPrefSpec);
  118.     err = FSpCreate (&gPrefSpec, kAppCreator, 'pref', smSystemScript);
  119.     if (err != noErr)
  120.         {
  121.         UserMessage("\pCan't create Preferences file.");
  122.         return 1;
  123.         }
  124.     err = FSpOpenDF (&gPrefSpec, fsRdWrPerm, &fRefNum);
  125.     if (err != noErr)
  126.         {
  127.         UserMessage("\pCan't create Preferences file.");
  128.         return 1;
  129.         }
  130.     bytes = sizeof(PrefInfo);
  131.     data = NewHandle(bytes);
  132.     HLock((Handle)data);
  133.     **((PrefInfo**)data) = gPrefInf;
  134.     err = FSWrite(fRefNum,&bytes,(Ptr)(*data));
  135.     if (err != noErr)
  136.         {
  137.         UserMessage("\pCan't create Preferences file.");
  138.         return 1;
  139.         }
  140.     HUnlock((Handle)data);
  141.     FSClose(fRefNum);
  142.     FlushVol(gPrefSpec.name,gPrefSpec.vRefNum);
  143.     DisposeHandle(data);
  144.     return 0;
  145. }
  146.  
  147.